﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Design;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;

using _XNA__RunningDeath.DTO;
using _XNA__RunningDeath.DTO.VatThe;
using _XNA__RunningDeath.GLO;

namespace _XNA__RunningDeath.BUS.VatThe
{
    class CDa_BUS
    {
        CVatThe_DTO _Da;

        public Vector2 _toadoXuatHien1; // Tọa độ xuất hiện của đá
        public Rectangle _reDa; //biến đùng để bao đối tượng đá
        Vector2 _pointStart;//Lưu lại tọa độ ban đâu 

        /// <summary>
        /// Dùng để khỏi tạo các thông tin cho lớp đá
        /// </summary>
        /// <param name="content"></param>
        /// <param name="gameTime"></param>
        /// <param name="spriteBatch"></param>
        public CDa_BUS(ContentManager content, GameTime gameTime, SpriteBatch spriteBatch)
        {
            this._Da = new CDa_DTO(content, gameTime, spriteBatch);
            CGLOBAL.TrangThaiDa = enumTrangThaiDa.con;
            _pointStart = new Vector2(_Da.Dstoado["da"].X, _Da.Dstoado["da"].Y);
            _toadoXuatHien1 = _pointStart;
            if (CGLOBAL.NewGame == enumGame.mLoad)
            {
                _toadoXuatHien1 = CGLOBAL.pointDa;
            }
        }

       /// <summary>
        ///  Cập nhật lại trạng thái của đá
       /// </summary>
       /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            _reDa = new Rectangle((int)_toadoXuatHien1.X, (int)_toadoXuatHien1.Y, _Da.Dstoado["da"].Width, _Da.Dstoado["da"].Height);

            if (CGLOBAL.TrangThaiDa == enumTrangThaiDa.mat)
            {
                _toadoXuatHien1.Y = CThamSo.HightForm;
            }

            Dachay(CGLOBAL.speedDa);
            CGLOBAL.pointDa = _toadoXuatHien1;
       }
         
        /// <summary>
        /// Cập nhật tọa độ khi đá di chuyển
        /// </summary>
        /// <param name="speed"></param>
        public void Dachay(int speed)
        {
            _toadoXuatHien1 = new Vector2(_toadoXuatHien1.X - speed, _toadoXuatHien1.Y);
            
            if (this._toadoXuatHien1.X+_reDa.Width <= -1)
            {
                _toadoXuatHien1.Y = _pointStart.Y;
                CGLOBAL.TrangThaiDa = enumTrangThaiDa.con;
                _toadoXuatHien1 = new Vector2(CThamSo.widthForm, _toadoXuatHien1.Y);
            }
        }

        /// <summary>
        /// set trạng thái biến mất của đá
        /// </summary>
        public void Mat()
        {
            CGLOBAL.TrangThaiDa = enumTrangThaiDa.mat;
        }

        /// <summary>
        /// dùng để vẽ vật thể ra
        /// </summary>
        /// <param name="gametime"></param>
        public void Draw(GameTime gametime)
        {
            if (CGLOBAL.TrangThaiDa == enumTrangThaiDa.con)
            {
                this._Da.SpriteBatch.Draw(this._Da.VatThe1, _toadoXuatHien1, Color.White);
            }
        }

    }
}
